package com.shujia.core

import com.shujia.core.Demo07GroupBy.StuGrp
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.rdd.RDD

object Demo18Action {
  def main(args: Array[String]): Unit = {
    val conf: SparkConf = new SparkConf()
    conf.setAppName("Demo17SortBy")
    conf.setMaster("local")

    val sc: SparkContext = new SparkContext(conf)

    val stuLineRDD: RDD[String] = sc.textFile("spark/data/students.txt")

    // 将每条数据转换成样例类对象
    val stuRDD: RDD[StuGrp] = stuLineRDD.map(line => {
      val splits: Array[String] = line.split(",")
      StuGrp(splits(0), splits(1), splits(2).toInt, splits(3), splits(4))
    })

    // count：统计数据条数
    val cnt: Long = stuRDD.count()
    println(cnt)

    // collect：将RDD中的“数据”转换成本地数组
    val stuArr: Array[StuGrp] = stuRDD.collect()
    println(stuArr.take(10).toList)

    // take：从RDD中取N条数据转化成本地数组
    // 注意：后面的foreach是数组提供的方法，不是RDD的方法
    stuRDD.take(5).foreach(println)

    /**
     * reduce：行为算子，将所有的数据作为一组进行聚合操作
     */
    // 将所有学生的年龄加在一起
    val sumAge: Int = stuRDD.map(stu => stu.age).reduce(_ + _)
    println(sumAge)

    /**
     * lookup:需要作用在KV格式的RDD上，通过Key获取所有的Value
     */
    val names: Seq[String] = stuRDD.map(stu => (stu.gender, stu.name)).lookup("男")
    println(names)

    // foreach

    // 保存文件

    while(true){

    }


  }

}
